Graphics processing systems are typically configured to receive graphics data, e.g. from an application running on a computer system, and to render the graphics data to provide a rendering output. For example, the graphics data provided to a graphics processing system may describe geometry within a three dimensional (3D) scene to be rendered, and the rendering output may be a rendered image of the scene. Some graphics processing systems (which may be referred to as “tile-based” graphics processing systems) use a rendering space which is subdivided into a plurality of tiles. The “tiles” are regions of the rendering space, and may have any suitable shape, but are typically rectangular (where the term “rectangular” includes square). To give some examples, a tile may cover a 16×16 block of pixels or a 32×32 block of pixels of an image to be rendered. As is known in the art, there are many benefits to subdividing the rendering space into tiles. For example, subdividing the rendering space into tiles allows an image to be rendered in a tile-by-tile manner, wherein graphics data for a tile can be temporarily stored “on-chip” during the rendering of the tile.
Tile-based graphics processing systems typically operate in two phases: a geometry processing phase and a rendering phase. In the geometry processing phase, the graphics data for a render is analysed to determine, for each of the tiles, which graphics data items are present within that tile. Then in the rendering phase, a tile can be rendered by processing those graphics data items which are determined to be present within that tile (without needing to process graphics data items which were determined in the geometry processing phase to not be present within the particular tile). The graphics data items may represent geometric shapes, which describe surfaces of structures in the scene, and which are referred to as “primitives”. A common primitive shape is a triangle, but primitives may be other 2D shapes or may be lines or points also. Objects can be composed of one or more (e.g. hundreds, thousands or millions) of such primitives.
Rendered images may be displayed on a display. A display may refresh pixels in a raster scan order, such that the upper rows of pixels of an image are displayed before lower rows of pixels of the image. In some situations, images may be rendered and displayed in real-time. Latency between rendering an image and displaying the image may detrimentally affect a user's perception of an application (e.g. a game application), in particular if the user interacts with the application. This is a particular issue for virtual reality applications. In order to reduce latency, a tile-based rendering system can render tiles in a raster scan order ahead of the raster scan of the display. This may allow some tiles of an image (e.g. corresponding to upper rows of an image) to be rendered and displayed before other tiles of the image (e.g. corresponding to lower rows of an image) have even been rendered. This can reduce the latency within the rendering/display chain.
As the rendering of a row of tiles must always proceed ahead of the display of the corresponding scan lines, this approach introduces a strict real-time timing requirement on the rendering of tiles.